package com.itheima.socket.tcp.demo13;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class ClientHandler implements Runnable {

    private Socket socket ;
    public ClientHandler(Socket socket) {           // 作用：接收socket对象
        this.socket = socket ;
    }

    @Override
    public void run() {

        try {

            // 3. 获取输入流对象
            InputStream inputStream = socket.getInputStream();

            // 4. 创建一个高效的字节输出流对象
            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("F:\\a.avi")) ;

            // 5. 读取数据，写数据
            byte[] bytes = new byte[1024] ;
            int len = -1 ;

            // 这个read方法是一个阻塞方法，当我们通道中没有数据了，这个方法一直是阻塞的，等待我们客户端进行传递数据
            while((len = inputStream.read(bytes)) != -1) {
                bufferedOutputStream.write(bytes , 0 , len);
            }

            // 获取输出流对象写数据
            OutputStream outputStream = socket.getOutputStream();
            outputStream.write("OK,上传成功了!".getBytes("UTF-8"));

            // 6. 资源的释放
            bufferedOutputStream.close();
            socket.close();

        }catch ( Exception e) {
            e.printStackTrace();
        }

    }

}
